import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.ArrayList;

import javax.swing.Box;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListModel;
import javax.swing.plaf.basic.BasicComboBoxUI.ComboBoxLayoutManager;
/**
 * 
 * @author Francisco Vallejo
 *
 */
public class VentanaPrincipal extends JFrame implements WindowListener {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	// Elementos de el cuadro superior
	private JPanel panelSuperior = new JPanel();
	private JLabel cabeceraSuperior = new JLabel("Gestion de alumnos",
			(int) CENTER_ALIGNMENT);
	private JPanel panelCentral1 = new JPanel();
	// Datos a Rellenar
	private JPanel panel1 = new JPanel();
	private JLabel label1 = new JLabel("DNI: ");
	private JTextField texto1 = new JTextField(20);
	private JLabel texto1Aux = new JLabel("");

	public JLabel getTexto1Aux() {
		return texto1Aux;
	}

	public void setTexto1Aux(JLabel texto1Aux) {
		this.texto1Aux = texto1Aux;
	}

	private JPanel panel2 = new JPanel();
	private JLabel label2 = new JLabel("Nombre: ");
	private JTextField texto2 = new JTextField(20);

	private JPanel panel3 = new JPanel();
	private JLabel label3 = new JLabel("Poblacion: ");
	private JTextField texto3 = new JTextField(20);

	private JPanel panel4 = new JPanel();
	private JLabel label4 = new JLabel("Telefono: ");
	private JTextField texto4 = new JTextField(20);

	private JPanel panel5 = new JPanel();
	private JLabel label5 = new JLabel("Fecha nacimiento: ");
	private JTextField texto5 = new JTextField(20);

	private JPanel panel6 = new JPanel();
	private JLabel label6 = new JLabel("Carrera");
	private String[] materias = {
			"Ingenieria Tecnica en Informatica de Gestion",
			"Ingenieria Informatica ", "Ingenieria Tecnica Industrial",
			"Ingeneria de Telecomunicaciones", "Historia",
			"Administracion y Gestion de Empresa", "Derecho", "Turismo" };

	String ingTecnica = "Ingenieria Tecnica en Informatica de Gestion";
	String ingInformatica = "Ingenieria Informatica";
	String ingTecnicaIndustrial = "Ingenieria Tecnica Industrial";
	String ingTeleco = "Ingeneria de Telecomunicaciones";
	String historia = "Historia";
	String adminEmpresa = "Administracion y Gestion de Empresa";
	String derecho = "Derecho";
	String turismo = "Turismo";

	private JComboBox combito = new JComboBox(materias);

	private JPanel panel7 = new JPanel();
	private JLabel texto7 = new JLabel("");
	// Listener de botones
	private MyListenerCambios listenerCambios = null;
	private MyListenerBotones listener = null;
	// Botones y Panel para los botones

	private JPanel panelBotones1 = new JPanel();
	private JButton botonBuscar = new JButton("Buscar");
	private JButton botonInsertar = new JButton("Insertar");
	private JButton botonModificar = new JButton("Modificar");
	private JButton botonEliminar = new JButton("Eliminar");

	// Elementos Cuadro inferior
	private JPanel panelInferior = new JPanel();
	private JLabel cabeceraInferior = new JLabel("Consultas de Carrera",
			(int) CENTER_ALIGNMENT);
	// Panel del cuerpo central Inferior
	// Panel controles
	private JPanel panelCentral2 = new JPanel();
	private JLabel labelaux1 = new JLabel("Carrera    ");
	private JComboBox comboInferior = new JComboBox(materias);
	// private JButton botonVerAlumnos = new JButton("Ver Alumnos");
	// Panel area de texto
	private JTextArea textAreaInferior = new JTextArea();
	private JList<Alumno> listaAlumnos = new JList<Alumno>();
	DefaultListModel modeloLista = new DefaultListModel();

	public JList<Alumno> getListaAlumnos() {
		return listaAlumnos;
	}

	public void setListaAlumnos(JList<Alumno> listaAlumnos) {
		this.listaAlumnos = listaAlumnos;
	}

	public JTextField getTexto1() {
		return texto1;
	}

	public void setTexto1(JTextField texto1) {
		this.texto1 = texto1;
	}

	public JTextField getTexto2() {
		return texto2;
	}

	public void setTexto2(JTextField texto2) {
		this.texto2 = texto2;
	}

	public JTextField getTexto3() {
		return texto3;
	}

	public void setTexto3(JTextField texto3) {
		this.texto3 = texto3;
	}

	public JTextField getTexto4() {
		return texto4;
	}

	public void setTexto4(JTextField texto4) {
		this.texto4 = texto4;
	}

	public JTextField getTexto5() {
		return texto5;
	}

	public void setTexto5(JTextField texto5) {
		this.texto5 = texto5;
	}

	public String[] getMaterias() {
		return materias;
	}

	public void setMaterias(String[] materias) {
		this.materias = materias;
	}

	public JComboBox getCombito() {
		return combito;
	}

	public void setCombito(JComboBox combito) {
		this.combito = combito;
	}

	public JLabel getTexto7() {
		return texto7;
	}

	public void setTexto7(JLabel texto7) {
		this.texto7 = texto7;
	}

	public JComboBox getComboInferior() {
		return comboInferior;
	}

	public void setComboInferior(JComboBox comboInferior) {
		this.comboInferior = comboInferior;
	}

	public JTextArea getTextAreaInferior() {
		return textAreaInferior;
	}

	public void setTextAreaInferior(JTextArea textAreaInferior) {
		this.textAreaInferior = textAreaInferior;
	}

	private ScrollPane scroll;

	// Panel de botones inferior
	private JPanel panelBotones2 = new JPanel();
	private JButton botonLimpiar = new JButton("Limpiar");
	private JButton botonSalir = new JButton("Salir");

	public VentanaPrincipal() {
		this.setLayout(new GridLayout(2, 1));
		this.setSize(800, 600);
		this.addWindowListener(this);
		panelSuperior.setVisible(true);
		panelSuperior.setLayout(new BorderLayout());
		cabeceraSuperior.setBackground(Color.gray);
		panelSuperior.add(cabeceraSuperior, BorderLayout.PAGE_START);
		panelSuperior.setBackground(Color.gray);
		// Cuerpo central del Panel CentralSuperior
		panelSuperior.add(panelCentral1);
		panelCentral1.setLayout(new GridLayout(7, 1));
		panelCentral1.setVisible(true);

		panel1.setLayout(new FlowLayout());
		Box bx1 = Box.createHorizontalBox();
		Box bx1Aux = Box.createHorizontalBox();
		Box bx1Aux2 = Box.createHorizontalBox();
		bx1.add(Box.createHorizontalStrut(82));
		bx1Aux.add(label1);
		bx1Aux.add(Box.createHorizontalStrut(25));
		texto1.addFocusListener(new FocusListener() {
			@Override
			public void focusLost(FocusEvent arg0) {
				listenerCambios.comprobarDni();
			}
			@Override
			public void focusGained(FocusEvent arg0) {
			}
		});
		bx1Aux.add(texto1);
		bx1Aux2.add(Box.createHorizontalStrut(5));
		bx1Aux2.add(texto1Aux);
		bx1.add(bx1Aux);
		bx1.add(bx1Aux2);
		panel1.add(bx1);
		panel1.setVisible(true);
		panelCentral1.add(panel1);

		panel2.setLayout(new FlowLayout());
		Box bx2 = Box.createHorizontalBox();
		bx2.add(Box.createHorizontalStrut(60));
		bx2.add(label2);
		bx2.add(Box.createHorizontalStrut(10));
		bx2.add(texto2);
		panel2.add(bx2);
		panel2.setVisible(true);
		panelCentral1.add(panel2);

		panel3.setLayout(new FlowLayout());
		Box bx3 = Box.createHorizontalBox();
		bx3.add(Box.createHorizontalStrut(50));
		bx3.add(label3);
		bx3.add(Box.createHorizontalStrut(10));
		bx3.add(texto3);
		panel3.add(bx3);
		panel3.setVisible(true);
		panelCentral1.add(panel3);

		panel4.setLayout(new FlowLayout());
		Box bx4 = Box.createHorizontalBox();
		bx4.add(Box.createHorizontalStrut(58));
		bx4.add(label4);
		bx4.add(Box.createHorizontalStrut(10));
		bx4.add(texto4);
		panel4.add(bx4);
		panel4.setVisible(true);
		panelCentral1.add(panel4);

		panel5.setLayout(new FlowLayout());
		Box bx5 = Box.createHorizontalBox();
		bx5.add(Box.createHorizontalStrut(8));
		bx5.add(label5);
		bx5.add(Box.createHorizontalStrut(10));
		bx5.add(texto5);
		panel5.add(bx5);
		panel5.setVisible(true);
		panelCentral1.add(panel5);

		panel6.setLayout(new FlowLayout());
		Box bx6 = Box.createHorizontalBox();
		bx6.add(Box.createHorizontalStrut(22));
		bx6.add(label6);
		bx6.add(Box.createHorizontalStrut(10));
		
		bx6.add(combito);
		panel6.add(bx6);
		panel6.setVisible(true);
		panelCentral1.add(panel6);

	
		panel7.setLayout(new FlowLayout());
		Box bx7 = Box.createHorizontalBox();
		bx7.add(Box.createHorizontalStrut(20));
		texto7.setText("");
		bx7.add(texto7);
		panel7.add(bx7);
		panel7.setVisible(true);
		panelCentral1.add(panel7);

		// Listener
		listener = new MyListenerBotones(this);
		listenerCambios = new MyListenerCambios(this);
		// Botones del panel superior
		panelSuperior.add(panelBotones1, BorderLayout.PAGE_END);
		panelBotones1.setLayout(new FlowLayout());

		panelBotones1.add(botonBuscar);
		botonBuscar.addActionListener(listener);
		panelBotones1.add(botonInsertar);
		botonInsertar.addActionListener(listener);
		panelBotones1.add(botonModificar);
		botonModificar.addActionListener(listener);
		panelBotones1.add(botonEliminar);
		botonEliminar.addActionListener(listener);
		this.add(panelSuperior);

		panelInferior.setVisible(true);
		panelInferior.setLayout(new BorderLayout());
		cabeceraInferior.addMouseListener(listenerCambios);
		panelInferior.add(cabeceraInferior, BorderLayout.PAGE_START);
		// Cuerpo central del Panel Inferior
		panelInferior.setBackground(Color.gray);
		panelCentral2.setLayout(new BorderLayout());
		panelCentral2.setVisible(true);

		JPanel panelControles2 = new JPanel();
		Box box1 = Box.createHorizontalBox();
		box1.add(labelaux1);
		// LISTENER DE EL COMBOBOX INFERIOR
		comboInferior.addItemListener(listenerCambios);
		box1.add(comboInferior);
		// box1.add(botonVerAlumnos);
		// botonVerAlumnos.addActionListener(listener);
		box1.setVisible(true);
		panelControles2.add(box1);
		panelControles2.setVisible(true);

		JPanel panelAuxiliar = new JPanel();
		scroll = new ScrollPane();

		// NECESITO LAS PROPIEDADES DE EL AREA DE TEXTO

		// scroll.add(textAreaInferior);

		listaAlumnos.setModel(modeloLista);
		listaAlumnos.addMouseListener(listenerCambios);
		scroll.add(listaAlumnos);
		scroll.setVisible(true);
		scroll.setWheelScrollingEnabled(true);
		scroll.setSize(700, 250);
		scroll.setScrollPosition(getLocation());
		panelAuxiliar.add(scroll);
		panelAuxiliar.setVisible(true);

		// Agrego los paneles al panel central 2
		panelCentral2.add(panelControles2, BorderLayout.PAGE_START);
		panelCentral2.add(panelAuxiliar);

		// Panel de bonotes inferior
		panelBotones2.setVisible(true);
		panelBotones2.add(botonLimpiar);
		botonLimpiar.addActionListener(listener);
		panelBotones2.add(botonSalir);
		botonSalir.addActionListener(listener);
		panelInferior.add(panelCentral2);
		panelInferior.add(panelBotones2, BorderLayout.PAGE_END);
		this.add(panelInferior);
	}

	public JLabel getCabeceraInferior() {
		return cabeceraInferior;
	}

	public void setCabeceraInferior(JLabel cabeceraInferior) {
		this.cabeceraInferior = cabeceraInferior;
	}

	public DefaultListModel getModeloLista() {
		return modeloLista;
	}

	public void setModeloLista(DefaultListModel modeloLista) {
		this.modeloLista = modeloLista;
	}

	
	@Override
	public void windowActivated(WindowEvent e) {
	}

	@Override
	public void windowClosed(WindowEvent e) {
		listener.salir();
		
	}

	@Override
	public void windowClosing(WindowEvent e) {
		listener.salir();
		
	}

	@Override
	public void windowDeactivated(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowDeiconified(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowIconified(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void windowOpened(WindowEvent e) {
		// TODO Auto-generated method stub
		
	}
}
